 /**
 * @author caif
 * @fileoverview  userinfo module
 */
;(function($){
	var $day = $("#day"),  
    $month = $("#month"),  
    $year = $("#year"),  
    $dDate = new Date(),
    dCurYear = $dDate.getFullYear(),
    str="";
	    
	for(var i=dCurYear-52 ; i<dCurYear+1 ; i++)
	{
	    if(i==dCurYear){
	        str="<option value="+i+" selected=true>"+i+"</option>";
	    }else{
	        str="<option value="+i+">"+i+"</option>";
	    }
	    $year.append(str);
	};
	
	for(var i=1 ; i<=12 ; i++){
	    if(i==($dDate.getMonth()+1))
	    {
	        str="<option value="+i+" selected=true>"+i+"</option>";
	    }else{
	        str="<option value="+i+">"+i+"</option>";
	    }
	    $month.append(str);
	};
	 
	function GetDaysInMonth(iMonth, iYear) {
	    var dPrevDate = new Date(iYear, iMonth, 0);
	    return dPrevDate.getDate();
	};
	
	function UpdateCal(iYear, iMonth , iDay , flag){
	    var dDate=new Date();
	    daysInMonth = GetDaysInMonth(iMonth, iYear);
	    $("#day").empty();
	    for (d = 1; d <= parseInt(daysInMonth); d++) {
//	    	if(d==dDate.getDate()){
//	            str="<option value="+d+" selected=true>"+d+"</option>";
//	        }else{
//	            str="<option value="+d+">"+d+"</option>";
//	        }
	        str="<option value="+d+">"+d+"</option>";
	        $("#day").append(str);
	    }
	};
	
	$("#categoryModal").on("show" , function( ){
		$(this).css({
        	left: ($(window).width() - $(this).width())/2,
        	top: 100
    	});
	});
	
	$(".feedback").click(function(){
	    $("#feedback_dlg").modal({
	        keyboard: true,
    		show:true
	    });
	    return false;
	})
	$year.change(function( event , flag ){
	    if( flag ){
	        UpdateCal($("#year").attr("data-value"), $("#month").attr("data-value"));
	        $("#year").val($("#year").attr("data-value"));
	        $("#month").val($("#month").attr("data-value"));
	        $("#day").val($("#day").attr("data-value"));
	    }else{
	        UpdateCal($("#year").val( ), $("#month").val( ));
	    }
	    
	})
	$month.change(function( event , flag ){
	    if( flag ){
	        UpdateCal($("#year").attr("data-value"), $("#month").attr("data-value"));
	        $("#year").val($("#year").attr("data-value"));
	        $("#month").val($("#month").attr("data-value"));
	        $("#day").val($("#day").attr("data-value"));
	    }else{
	        UpdateCal($("#year").val( ), $("#month").val( ));
	    }
	})
	
	$(".user_city").change(function( event , flag ){
		var id = "";
		var html="<option value='-1'>--请选择--</option>";
		if( flag ){
		    id = $(this).attr("data-value");
		    $(this).val( id );
		}else{
	        id = $(this).val();
	    }
	    var json = provinceJsonData;
		for(var i in json[id] ){
			html += "<option value='"+i+"'>"+json[id][i]+"</option>";
		}
		$(this).next(".subcity").html(html);
	});
	
	$(".subcity").change(function( event , flag ){
	    if( flag )
	    {
	        $(this).val( $(this).attr("data-value") );
	    }
	})
	$("#job_category").change(function(event , flag){
	    if( flag )
	    {
	        $(this).val( $(this).attr("data-value") );
	    }
	})
	
	$('#categoryModal').modal( 
	{
		keyboard: true,
		show:false,
		"backdrop"  : "static"
	}).draggable({
        containment: 'body',
        handle: '.modal-header'
    });
	
	
	var hash = window.location.hash;
	$('#myTab a').click(function (e) {
	    $(this).tab('show');
	}).each(function(idx, el){
		if($(this).attr('href') === hash){
			$(this).trigger('click');
			return false;
		}
	});
	
	$("#ainfo button[type='submit']").click(function(e){
		e.preventDefault();
		$("#notify-wrapper").hide();
		$("#mask").show();
		var birthday = new Date();
		birthday.setFullYear($year.val(), $month.val()-1, $day.val());
		$("#birthday").val(birthday.getTime());
		$(this).parents("form").ajaxSubmit({
			url:"/account/updateUser.json",
			type:"post",
			success : function(){
				$("#notify").addClass("success");
				$("#notify-msg").html("保存成功");
				$("#mask").hide();
				$("#notify-wrapper").fadeIn(1).delay(1000).fadeOut(500 );
			}
		});
	});
	
	$("#industry_str").focus(function(){
		$("#categoryModal").modal("show");
		$("#categoryList input").prop("checked" , false);
		if( $("#industry_str").val() )
		{
		    var arr = $("#industry_str").val().split(",");
		    if( arr.length == 1 && arr[0] == "其他")
		    {
		        $( "#categoryList input:not(#other)" ).prop("disabled" , true);
		        $("#other").prop("checked" , true);
		    }
		    else
		    {
		        for( var i=0 ; i < arr.length ; i++ )
    		    {
    		        $("#categoryList label div").each(function(){
    		            if($(this).text() == arr[i])
    		            {
    		                $(this).prev().prop("checked" , true);
    		            }
    		        })
    		    }
		    }
		}
	});
	$("#categoryBtn").click(function(e)
	{
		var str="";
		e.preventDefault();
		$("#categoryModal input:checkbox[checked]").each(function(){
			str += $(this).next().html()+","
		})
		$("#industry_str").val(str.substring(0 , str.length-1));
		$("#categoryModal").modal("hide");
	});
	$("#binfo button[type='submit']").click(function(e){
		e.preventDefault();
		$("#notify-wrapper").hide();
		$("#mask").show();
		$(this).parents("form").ajaxSubmit({
			url:"/account/updateUser.json",
			type:"post",
			success : function(){
				$("#notify").addClass("success");
				$("#notify-msg").html("设置修改成功");
				$("#mask").hide();
				$("#notify-wrapper").fadeIn(1).delay(1000).fadeOut(500 );
			}
		});
	});
	
	$( "#categoryList #other" ).click(function(){
	    if( $(this).prop("checked") == true )
	    {
	        $( "#categoryList input:not(#other)" ).prop("disabled" , true);
	        $( "#categoryList input:not(#other)" ).prop("checked" , false);
	    }
	    else
	    {
	        $( "#categoryList input" ).prop("disabled" , false);
	    }
	})
	
	$("#cinfo input").change(function( ){
		$(this).parents(".control-group").removeClass("error");
	});
	
	function charMode(iN) {
        if (iN >= 48 && iN <= 57) //数字    
            return 1;
        if (iN >= 65 && iN <= 90) //大写字母    
            return 2;
        if (iN >= 97 && iN <= 122) //小写    
            return 4;
        else return 8; //特殊字符    
    }

    function bitTotal(num) {
        var modes = 0;
        for (i = 0; i < 4; i++) {
            if (num & 1) modes++;
            num >>>= 1;
        }
        return modes;
    }

	$("#npassword").keyup(function(){
		var passwordComplex = 0;
        var value = $(this).val();
        if (value.length == 0) {
            passwordComplex = 0;
        } else {
            var modes = 0;
            for (i = 0; i < value.length; i++) {
                var c = charMode(value.charCodeAt(i));
                modes |= c;
            }
            passwordComplex = bitTotal(modes);
        }
        $('.password-power span').attr('class', 'empty');
        if (passwordComplex == 0) {
            return;
        }
        $('.password-power span').each(function (index) {
            var i = index + 1;
            $(this).attr('class', 'good');
            if (i == passwordComplex) {
                return false;
            }
        });
	});
	
	function checkPwd(pwd){
		var v = pwd.val();
		if(v === ''){
			return false;
		}
		if(v.length < 6 || v.length > 16){
			return false;
		}
		return true;
	}
	$("#opassword").blur(function(){
		if(checkPwd($("#opassword")) === false){
			$("#opassword").select().parents(".control-group").addClass("error");
			$("#opassword_error").html("<strong style='color:#B94A48;padding-left:10px'>密码必须为 6-16 位字符</strong>");
			return false;
		}
		else
		{
			$("#opassword_error").html("");
		}
	});
	
	$("#npassword").blur(function(){
		if(checkPwd($("#npassword")) === false){
			$("#npassword").select().parents(".control-group").addClass("error");
			$("#npassword_error").html("<strong style='color:#B94A48;padding-left:10px'>密码必须为 6-16 位字符</strong>");
			return false;
		}
		else
		{
			$("#npassword_error").html("");
		}
	});
	
	$("#cpassword").blur(function(){
		if(checkPwd($("#cpassword")) === false){
			$("#cpassword").select().parents(".control-group").addClass("error");
			$("#resetpwd_error").html("<strong style='color:#B94A48;padding-left:10px'>密码必须为 6-16 位字符</strong>");
			return false;
		}
		else
		{
			$("#resetpwd_error").html("");
		}
		
		if( $("#npassword").val() != $("#cpassword").val()){
			$("#cpassword").parents(".control-group").addClass("error");
			$("#resetpwd_error").html("<strong style='color:#B94A48;padding-left:10px'>两次密码不一致</strong>");
			return false;
		}
		else
		{
			$("#resetpwd_error").html("");
		}
	});
	
	
	$("#cinfo button[type='submit']").click(function(e){
		if(checkPwd($("#opassword")) === false){
			$("#opassword").select().parents(".control-group").addClass("error");
			$("#opassword_error").html("<strong style='color:#B94A48;padding-left:10px'>密码必须为 6-16 位字符</strong>");
			return false;
		}
		else
		{
			$("#opassword_error").html("");
		}
		if(checkPwd($("#npassword")) === false){
			$("#npassword").select().parents(".control-group").addClass("error");
			$("#npassword_error").html("<strong style='color:#B94A48;padding-left:10px'>密码必须为 6-16 位字符</strong>");
			return false;
		}
		else
		{
			$("#npassword_error").html("");
		}
		
		if(checkPwd($("#cpassword")) === false){
			$("#cpassword").select().parents(".control-group").addClass("error");
			$("#resetpwd_error").html("<strong style='color:#B94A48;padding-left:10px'>密码必须为 6-16 位字符</strong>");
			return false;
		}
		else
		{
			$("#resetpwd_error").html("");
		}
		
		if( $("#npassword").val() != $("#cpassword").val()){
			$("#cpassword").parents(".control-group").addClass("error");
			$("#resetpwd_error").html("<strong style='color:#B94A48;padding-left:10px'>两次密码不一致</strong>");
			return false;
		}
		else
		{
			$("#resetpwd_error").html("");
		}
		
		$("#notify-wrapper").hide();
		$("#mask").show();
		$(this).parents("form").ajaxSubmit({
			url:"/account/resetPassword.json",
			type:"post",
			success : function(data){
				if(eval(data.result)){
					$("#notify").addClass("success");
					$("#notify-msg").html("设置修改成功");
					$("#mask").hide();
					$("#notify-wrapper").fadeIn(1).delay(1000).fadeOut(500 );
					$('#opassword').val('');
					$('#npassword').val('');
					$('#cpassword').val('');
					$('.password-power span').removeClass('good').addClass('empty');
				}else{
					$("#notify").addClass("fail");
					$("#notify-msg").html("旧密码错误");
					$("#mask").hide();
					$("#notify-wrapper").fadeIn(1).delay(1000).fadeOut(500 );
				}
			}
		});
		return false;
	});
	
	$("#zipcode_str").blur(function(){
	    if(!$(this).val().match(/^[a-zA-Z0-9 ]{3,12}$/))
	    {
	        $(this).select().parents(".control-group").addClass("error");
	        $("#zipcode_error").html("<strong style='color:#B94A48;padding-left:10px'>请输入六位邮政编码</strong>");
	    }
	    else
	    {
	        $(this).select().parents(".control-group").removeClass("error");
	        $("#zipcode_error").html("");
	    }
	})
	$("#tel_str").blur( function(){
	    if(!$(this).val().match(/^\d{11}$/))
	    {
	        $(this).select().parents(".control-group").addClass("error");
	        $("#tel_error").html("<strong style='color:#B94A48;padding-left:10px'>请输入十一位手机号码</strong>");
	    }
	    else
	    {
	        $(this).select().parents(".control-group").removeClass("error");
	        $("#tel_error").html("");
	    }
	} )
	
	$("#phone_str").blur( function(){
	    if(!$(this).val().match(/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/))
	    {
	        $(this).select().parents(".control-group").addClass("error");
	        $("#phone_error").html("<strong style='color:#B94A48;padding-left:10px'>请输入正确座机号码</strong>");
	    }
	    else
	    {
	        $(this).select().parents(".control-group").removeClass("error");
	        $("#phone_error").html("");
	    }
	} )
	
	$("#dinfo button[type='submit']").click(function(e){
		e.preventDefault();
		if(!$("#zipcode_str").val().match(/^[a-zA-Z0-9 ]{3,12}$/)){
			$("#zipcode_str").select().parents(".control-group").addClass("error");
			$("#zipcode_error").html("<strong style='color:#B94A48;padding-left:10px'>请输入六位邮政编码</strong>");
		}
		if(!$("#tel_str").val().match(/^\d{11}$/)){
			$("#tel_str").select().parents(".control-group").addClass("error");
			$("#tel_error").html("<strong style='color:#B94A48;padding-left:10px'>请输入十一位手机号码</strong>");
		}
		if(!$("#phone_str").val().match(/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/)){ 
			$("#phone_str").select().parents(".control-group").addClass("error");
		    $("#phone_error").html("<strong style='color:#B94A48;padding-left:10px'>请输入正确座机号码</strong>"); 
		} 
		
		if( $("#dinfo" ).find(".error").length > 0)
		{
		   return false;    
		}
		
		$("#notify-wrapper").hide();
		$("#mask").show();
		$(this).parents("form").ajaxSubmit({
			url:"/account/updateUser.json",
			type:"post",
			success : function(){
			        $("#dinfo" ).find(".error").removeClass(".error");
			        $("#zipcode_error,#tel_error,#phone_error").html("");
					$("#notify").addClass("success");
					$("#notify-msg").html("设置修改成功");
					$("#mask").hide();
					$("#notify-wrapper").fadeIn(1).delay(1000).fadeOut(500 );
			}
		});
		return false;
	});
	
	
	$("#info .cancel").click(function(e){
		e.preventDefault();
	})
	
	if( !eval($("#male").attr("data-value")) )
	{
	     $("#male").attr("checked","checked");
	}
	else
	{
	    $("#fmale").attr("checked","checked");
	}
	$("#myspace .unauth").each(function(){
		var that = $(this);
		$(this).click(function(){
			$.ajax({
		        url : "/account/cancelAuthorization.json",
		        type:"post",
		        data : {id:$(this).attr("data-id")},
		        success : function(data){
		            if(data.result == "success"){
		            	that.parents(".fieldset").remove();
		            }
		        }
		    });
		    return false;
		})
	})
	
	$("#add_city").trigger('change' ,true);
	$("#add_scity").trigger('change' , true);
	$("#com_address_city").trigger('change' , true);
	$("#com_address_scity").trigger('change',true);
	$("#job_category").trigger('change',true );
	$("#year").trigger('change',true);
	$("#month").trigger('change',true);
	 	
	
	var userAvatar = $('#user-avatar'),
	previewAvatar = $('#preview-avatar');
	
	var uploader = new plupload.Uploader({
        runtimes : 'html5, flash',
        browse_button : 'uploadimage',
        container : 'container',
        max_file_size : '10mb',
        multi_selection: false,
        url : 'avatarUpload.json',
        flash_swf_url : 'js/libs/jquery/plupload/plupload.flash.swf',
        filters : [
            {title : "Image files", extensions : "jpg,gif,png"}
        ],
        resize : {width : 410, height : 410, quality : 90}
    });
    $('#saveavatar').click(function(e) {
        //save
    	var t = $(this);
    	$.post('avatarUpload.json', cropInfo ? cropInfo : {notcrop: 'true'}, function(e){
    		var src =  window.rootPath + '/avatar?id=' + window.uid + '_200';
    		userAvatar.removeAttr('style').attr('src', src).parent().addClass('init-imgstyle');
    		previewAvatar.empty().css('visibility', 'hidden');
    		$('#cancelavatar').css('visibility', 'hidden');
    		t.css('visibility', 'hidden');
    	});
    });
    
    $('#cancelavatar').click(function(){
    	var src =  window.rootPath + '/avatar?id=' + window.uid + '_200';
    	userAvatar.removeAttr('style').attr('src', src).parent().addClass('init-imgstyle');
		previewAvatar.empty().css('visibility', 'hidden');
		$('#saveavatar').css('visibility', 'hidden');
		$(this).css('visibility', 'hidden');
    });
    
    uploader.bind('FileUploaded', function(up, file, response) {
    	response = response.response;
    	response = $.parseJSON(response);
    	if(response.result !== 'success') return;
    	$('#saveavatar').css('visibility', 'visible');
    	$('#cancelavatar').css('visibility', 'visible');
    	var src = window.rootPath + '/avatar?id=' + window.uid + '_1';
    	var img = $('<img>', {id: 'preview-avatar-img', style: 'visibility:hidden'})
    	.bind('load', function(){
    		userAvatar.show();
    		previewAvatar.empty().css('visibility', 'hidden');
    		userAvatar.css({
    			'margin-left': 0,
    			'margin-top': 0
    		});
    		if(img.width() <= 200 && img.height() <= 200){
    			cropInfo = null;
    			userAvatar.attr('src', src).parent().addClass('init-imgstyle');
    		}else{
    			userAvatar.attr('src', src).parent().removeClass('init-imgstyle');
	    		previewAvatar.append(img).css('visibility', 'visible');
		    	initJcrop();
	    	}
    	});
    	img.attr('src', src).appendTo(document.body);
    });
    
    uploader.bind('QueueChanged', function(up, files) {
    	userAvatar.hide();
    	uploader.start();
    });
    
    uploader.bind('Error', function(up, err) {
    	//todo
    });
    
    uploader.init();
    var cropInfo;
    function initJcrop(){
    	var boundx,
	    boundy;
		$('#preview-avatar-img').Jcrop({
	    	onChange: updatePreview,
	    	onSelect: updatePreview,
	    	aspectRatio: 1,
	    	bgOpacity: 0.3,
	        bgColor: '#000',
	        addClass: 'jcrop-light'
	  	}, function(){
	  		var bounds = this.getBounds();
	        boundx = bounds[0];
	        boundy = bounds[1];
	        this.animateTo([10, 10, 400, 400]);
	  	});
		
		function updatePreview(c){
	    	if (parseInt(c.w) > 0){
		      	var rx = 200 / c.w,
		      	ry = 200 / c.h;
		      	userAvatar.css({
		        	width: Math.round(rx * boundx) + 'px',
		        	height: Math.round(ry * boundy) + 'px',
		        	marginLeft: '-' + Math.round(rx * c.x) + 'px',
		        	marginTop: '-' + Math.round(ry * c.y) + 'px'
		      });
		      cropInfo = c;
		    }
	  	}
    }
})(jQuery);
 
